# 绘制第一个公式：20sin(x-140°)+20
import numpy as np
import matplotlib.pyplot as plt
import scienceplots  # 导入scienceplots以使用SCI风格

# 使用SCI风格且不启用LaTeX
plt.style.use(['science', 'no-latex'])

# 数据准备
x_deg = np.linspace(0, 360, 1000)  # 角度范围0-360度
x_rad = np.radians(x_deg)          # 转换为弧度
shift_rad = np.radians(110)        # 110度转换为弧度
y = 20 * np.sin(x_rad - shift_rad) + 20  # 计算函数值

# 创建图形
fig, ax = plt.subplots(figsize=(6, 4), dpi=300)

# 绘制曲线（使用普通文本标签，不涉及LaTeX）
ax.plot(x_deg, y, label='y=20sin(x-110)+20')

# 设置标签和标题（纯文本格式）
ax.set_xlabel('time (Day)', fontsize=12)
ax.set_ylabel('temperature', fontsize=12)
ax.set_title('Annual Temperature Variation Chart', fontsize=14, pad=10)

# 设置坐标轴范围和刻度
ax.set_xlim(0, 360)
ax.set_ylim(0, 45)
ax.set_xticks(np.arange(0, 361, 60))
ax.set_yticks(np.arange(0, 46, 10))


# 添加副坐标轴用于显示月份
ax2 = ax.twiny()  # 创建共享y轴的副x轴
ax2.set_xlim(ax.get_xlim())  # 与主x轴范围保持一致
month_positions = np.arange(1, 361, 30)  # 每月30天的位置
month_labels = [str(i) for i in range(1, 13)]  # 1-12月标签
ax2.set_xticks(month_positions)
ax2.set_xticklabels(month_labels)
ax2.set_xlabel('Month', fontsize=12)  # 副坐标轴标签



# 添加图例和网格
ax.legend(frameon=True)
ax.grid(alpha=0.5, linestyle='--')

# 紧凑布局并保存
plt.tight_layout()
plt.savefig('p1.png', dpi=300)
plt.show()
    